#!/bin/bash


# shell运算

# 原生的bash不支持数学运算，但可以通过其他命令实现；例如 ： awk 和 expr ,expr 常用。
# expr 是一款表达式计算工具。
# `` : 反引号内可以执行命令
# () : 小括号内可以执行命令
# $[] : 也可以执行算术运算，注意 ： 中括号与数字之间不能有空格

val=`expr 2 + 2` # 注意 ：这是反引号
#val=`expr 2+2` # 错误 ，运算符两侧没有空格
echo "两数之和为 : $val"

# 注意 ：
#   使用反引号包裹  ，运算符两边必须有空格

a=10
b=20

val=$[a + b]
echo "-----a + b : $val"

val=$[a+b]
echo "-----a + b : $val"

val=`expr $a + $b`
echo "a + b : $val"

val=`expr $a - $b`
echo "a - b : $val"

val=`expr $a \* $b` # 是相乘 *
echo "a * b : $val"

val=`expr $b / $a`
echo "b / a : $val"

val=`expr $b % $a`
echo "b % a : $val"

if [ $a == $b ]
then
   echo "a 等于 b"
fi

if [ $a != $b ]
then
   echo "a 不等于 b"
fi

echo '------------------------------------'
# echo 命令
echo "\"It is a test\""   # 转义
echo \"It is a test\"    # 转义


echo '------------------------------------'
# printf 命令
# format-string为双引号
printf "%d %s\n" 1 "abc"

# 单引号与双引号效果一样
printf '%d %s\n' 1 "abc"

# 没有引号也可以输出
printf %s abcdef

# 格式只指定了一个参数，但多出的参数仍然会按照该格式输出，format-string 被重用
printf %s abc def

printf "%s\n" abc def

printf "%s %s %s\n" a b c d e f g h i j

# 如果没有 arguments，那么 %s 用NULL代替，%d 用 0 代替
printf "%s and %d \n"

